package ACM;
/**
 *
 * 题目描述：
 * 有一个仅包含’a’和’b’两种字符的字符串s，长度为n，
 * 每次操作可以把一个字符做一次转换（把一个’a’设置为’b’，或者把一个’b’置成’a’)；
 * 但是操作的次数有上限m，问在有限的操作数范围内，能够得到最大连续的相同字符的子串的长度是多少。
 *
 * 输入描述
 * 第一行两个整数 n , m (1<=m<=n<=50000)，第二行为长度为n且只包含’a’和’b’的字符串s。
 *
 * 输出描述
 * 输出在操作次数不超过 m 的情况下，能够得到的 最大连续 全’a’子串或全’b’子串的长度。
 *
 * 样例输入
 * 8 1
 * aabaabaa
 *
 * 样例输出
 * 5
 * */
import java.util.*;
import java.lang.Math.*;

class Main {
    public static void main(String[] args){

        Scanner sc = new Scanner(System.in);
        int len = sc.nextInt();  //字符串长度
        int k = sc.nextInt();  //最多变换次数
        String s = sc.next();  //字符串

        //记录字符的数量
        int[] num = new int[26];
        int maxn = 0;  //滑动窗口内最多字符长度
        int left = 0, right = 0;  //滑动窗口指针
        //滑动窗口
        while (right < len) {
            int index = s.charAt(right) - 'a';
            num[index]++;  //右指针每次增加数量
            maxn = Math.max(maxn, num[index]);  //更新滑动窗口中最大字符数量
            if (right - left + 1 - maxn > k) {  //如果滑动窗口的大小比 最大字符数量+变换次数还大
                num[s.charAt(left) - 'a']--;  //需要平移滑动窗口
                left++;
            }
            right++;
        }
        System.out.println(right-left);
    }
}
